package com.zzx.redis;

import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 
 * @ClassName: IBaseRedisService 
 * @Description: redis 基础 service
 * @author zzx
 *
 * @date 2020年6月30日
 */
public interface IBaseRedisService extends Serializable {
	void setString(final String key, final Object cache);

	void setString(final String key, final Object cache, long timeout);

	Object getString(final String key);

	void appendString(final String key, final String cache);

	void batchSetString(final Map<String, Object> cache);

	void incr(final String key);

	void incr(final String key, final Long delta);

	void setMap(final String key, final Map<String, Object> mapCache);
	
	void setMap(final String key, final Map<String, Object> mapCache, long timeout);
	
	void setMapUpdateValue(final String key1, final String key2, final Object cache);
	
	void setMapUpdateValue(final String key1, final String key2, final Object cache, long timeout);

	void setMapAddValue(final String key1, final String key2, final Object cache);

	Map<Object, Object> getMap(final String key);

	Object getMap(final String key1, final String key2);

	List<Object> getMapList(final String key1, List<Object> key2s);

	Set<Object> getMapKeys(final String key);

	List<Object> getMapValues(final String key);

	Long delMapKey(final String key1, final Object... key2s);

	Long getMapLength(final String key);

	void setListL(final String key, final Object... caches);

	void setListLX(final String key, final Object... caches);

	void setListR(final String key, final Object... caches);

	void setListRX(final String key, final Object... caches);

	void delList(final String key, final Long count, final Object cache);

	List<Object> getList(final String key, final Long start, final Long end);

	Object getList(final String key, final Long index);

	Long getListLength(final String key);

	void setSet(final String key, final Object... caches);
	
	void setSet(final String key, long timeout, final Object... caches);

	Set<Object> getStet(final String key);

	Set<Object> getSetDiff(final String key1, final String key2);

	Set<Object> getSetInter(final String key1, final String key2);

	Set<Object> getUnionSet(final String key1, final String key2);

	Long getSetLength(final String key);

	void moveSet(final String key1, final String key2, final Object cache);

	Object popSet(final String key);

	List<Object> getRandSet(final String key, final Long count);

	Long delSetValue(final String key1, final Object... key2s);

	Boolean existsSetValue(final String key1, final String key2);

	Boolean exists(final String key);

	void delete(final String key);

	int keys(final String key);
}
